Namazu 2.0に関するよくある質問、ありそうな質問とその答えをま とめた文書です。このファイルの最新版は http://www.namazu.org/FAQ.html にあります。 Namazu 1.3.0.x を対象とした 古いFAQ もあり ます。
Namazu はできるかぎりお手軽に使えることを目指しています。 技術的には決して高度なものではありませんが、 手軽に使えるという面では割といい線をいっていると思います。 ただし、別途 KAKASI/ChaSen とその辞書が必要なので使えるディスク容量に余裕がないと使えません。 メイリングリストを開設して比較的活発にメンテナンスが行われているのも特徴といえると思います。
もしも古い Namazu をお使いならば最新のものを試してみてください。 この FAQもよく読んでみてください。既に解決しているかもしれません。 そうでなければ メイリングリストの方へご報告ください。
何か良いアイディアがあれば メイリングリストの方まで要望を提案してください。 有用なものであれば取り入れていきたいと思います。
問題ありません。どうぞご利用ください (Namazuの開発への援助は歓迎し ます)。ただし完全に無保証ですのでその点はご了承ください。Namazu の ライセンスは GNU General Public License version 2 に従うものとします。
特に意味はありません。思いつきで決めました。
質問する前にまずマニュアルとこの FAQ をしっかり読んでください。ど うしても分からないときは
% uname -a
と実行してみてください
% namazu -v
と実行してみてください
% perl -v
と実行してみてください
% gcc -v
と実行してみてください
% nkf -v
と実行してみてください% telnet localhost 80<改行>
HEAD / HTTP/1.0<改行>
<改行>
などについて簡潔な文章で書いてメイリングリ ストまで報告してください(投稿のマナーを参照のこと)。 ただし、質問しても必ず答えが返ってくるとは限らないのでご了承くださ い (答える義務はありません)。
身近に詳しい人を見つけて教えてもらってください。あるいは書籍などで 自習してください。Namazu以前の初歩的な質問をメイリングリストに送ら れても困ります。
我々(?)はあなたのすぐ側には居ないわけですから、
「車のウインカーがつきません」
「ウインカーレバーを倒してみるのは?」
「ok, ウインカーつきました」
程度のアドバイスはできると思いますが、
「車のエンジンがかかりません」というのに対して、 「ではボンネットを開けて、向かって右の前から2番目にあるバッテリーの緑 のフタを外して赤いワイヤーを外して接点部の鉛の覆いを外して接点の銅に緑 青が吹いていたらそれをサンドペーパーでこすって磨いて接点復活剤をかけて また組み上げるのがまず1点。次に向かって左3番目の ECU を開けて CPU の (以下 120 行省略) 」 みたいな指摘は、超人かアポロ13号の地上指令室でもないかぎり、 残念ながらできません。
KAKASI のドキュメントを読んでがんばってください。または身近 に詳しい人を見つけて教えてもらってください。
次の手順でやり直してください。
Namazuに必要なソフトウェアに関してはチュートリアル準備とmakeを参照してください。
Namazuは2.0からlibnmzライブラリを提供しています。 これをアプリケーションにリンクする際には、libintlライブラリも 一緒にリンクしなければなりません。 Namazuに同梱(2.0.12まで)のlibintlライブラリはmake install時にインストール されません。
ただし、GNU/Linux(glibc2)の場合はlibintlの実装がCランタイムライブラリ に取り込まれているので、別途入手する必要はありません。
libnmzライブラリを使用するソフトウェアにはSearch::Namazu Perlモジュー ルがあります。
非常に場当たり的な対処ではありますが、configure時に --with-included-gettextオプションを追加して、Solaris gettextの代わり にNamazuに同梱されているGNU gettextライブラリを使うようにしてください。 (2.0.12まで)
Namazu 2.0.13 からは GNU gettext をインストールした上で、 configure時に--with-libintl-prefixオプションで libintl の場所を 明示的に指定してください。 (例: % ./configure --with-libintl-prefix=/usr/local)
NamazuではSolaris gettextはサポートされていません。これはGNU gettext とSolaris gettextではメッセージカタログの形式に互換性がなく、mknmzで 使われているgettext.plスクリプトはGNUフォーマットのメッセージカタログ しか取り扱えないためです。
できます。検索にロックがかかるのはほんの一瞬です。
よっぽどタイミングが悪くないかぎり、壊れません。ただし、 作 業ファイル NMZ.*.tmp、および (インデックスの2重更新を防ぐ) ロックファイル NMZ.lock2 が残ってしまうことがあります。もし 残っていれば削除してください。
報告のあったもののなかでは 878,914 ファイル、合計 2,167,480,108
bytes の文書を対象にしたものが最大です (現在の世界記録保持者はすぎうらし
ろうさんです :-)。
もちろん、このデータが上限というわけではありません。
[Base] Date: Tue Aug 31 18:46:20 1999 Added Files: 878,914 files Total Files: 878,914 files Size: 2,167,480,108 bytes Added Keywords: 7,339,687 words Total Keywords: 7,339,687 words Wakati: module_kakasi -ieuc -oeuc -w ARGV: '-ahu' '-F' 'B' Perl Version: 5.00503 Namazu Version: 1.4.0.0-beta-8 System: freebsd Time: 79874 sec. NMZ.f 883950234 NMZ.fi 3515656 NMZ.i 721295588 NMZ.ii 29358748 NMZ.p 428365331 NMZ.pi 262144 NMZ.r 33406075 NMZ.t 3515656 NMZ.w 153384197
これより規模の大きいインデックスを作成された方はぜひメイリン グリストにご連絡ください。
Namazu は ./configure の実行時に nkf, kakasi (chasen, mecab) のパスを $PATH から検出します。あらかじめ nkf, kakasi (chasen, mecab) を $PATH の 通っているところにインストールしておいてください。
メモリ不足です。次の項目を参照してください。
大きなファイルを処理していると Out of memory! が発生すること
があります。この場合は設定ファイル mknmzrc もしくは .mknmzrc の中の
$FILE_SIZE_MAX
の値を下げると解決するかもしれ
ません。たくさんのファイルを処理していると同じように Out of
memory! が発生することがあります。
この場合は設定ファイル mknmzrc もしくは .mknmzrc の中の
$ON_MEMORY_MAX
の値を下げると解決するかもしれま
せん。あるいは、メモリを増設する、という手段が一番、確実かも
しれません。
メモりが多くても Out of memory! が発生するときは、OS の limitに引っ掛かっている可能性があります。FreeBSD 2.2.8 + tcsh の環境では次のように実行して解決したという報告がありま す。
% unlimit datasize % unlimit stacksize
Namazuはインデックス作成時に、パス名に含まれる記号類を URL風に ' %xx' としてエンコードして記録します。ゆえにパス名に含まれる '%7Efoo' は '%257Efoo' のように '%' の部分が '%25' に変換され、嬉しくない結果となります。
このような場合は mknmz 実行時に -U オプションをつけてパス名のエン コードを行わないようにします。 '%7E' はそのまま '%7E' として記録さ れます。
これは Perl の出力する警告です。特に実害はないと思います。
Perlの ヴァージョンによって警告が出たりでなかったりします。
mknmz の一行目から '-w' を取り除くと消えるはずですが、
どういう理由で警告が出ているのかきちんと確認しましょう。
環境変数 LANG 等に ja_JP.utf8 を設定したり、C を設定して日本語の 文書を処理したりすると、この警告が出る場合があります。 環境変数の設定に誤りがないことを確認しましょう。
mknmz を実行する際に unix系のOSの場合には
% nice mknmz <各種引数>
Microsoft Windows2000,XP,Vista等の場合には
c:\> start /low mknmz <各種引数>
として優先度を下げて実行するとフォアグランドの作業がしやすくなる かもしれません。
perl5.8.1を使っていると思われます。環境変数 PERL_HASH_SEED に 0 を 設定して実行しなおしてください。
これは Perl5.8.1 で導入されたハッシュのランダム化の影響を mknmz が 受けないようにするものです。Perl5.8.0以前、5.8.2以降では この設定は不要です。
MacBinary I/II/III 形式のファイルを他の形式のファイルと間違えて、 誤動作するのを防ぐ排除フィルタです。
Apache なら srm.conf に
AddHandler cgi-script .cgi
の行を追加すると解決するかもしれません。
Apache 1.3 以降であれば .htaccess に
<FilesMatch "^\.(htaccess|htpasswd|htgroup|namazurc)$"> order allow,deny deny from all </FilesMatch>
と設定します。.namazurc だけなら次の通り。
<Files .namazurc> order allow,deny deny from all </Files>
[namazu 550], SATOH Fumiyasu <fumiya@cij.co.jp> さんのメイ ルより引用。
http://www.namazu.org/doc/manual.html#form-idxnamesの記述で
複数のインデックスを検索するは NMZ.head に checkbox の記述をします。 <strong>対象インデックス</strong> <ul> <li><input type="checkbox" name="idxname" value="foo">foo <li><input type="checkbox" name="idxname" value="bar">bar <li><input type="checkbox" name="idxname" value="baz">baz </ul>
とありますが、単に
<li><input type="checkbox" name="idxname" value="foo" checked>foo
と記述して checked を有効にしても、ブラウザ上のチェックボックスは チェックされません。
これを実現するには、
% cat NMZ.head.ja NMZ.body.ja NMZ.foot.ja > index.html
などとして、静的にHTMLを生成して、 この index.html の <form> ... </form> の中で、 checked を有効にしてみて下さい。
この理由として namazu.cgi は、CGI引数が渡されたとき、 NMZ.head の中の <form>〜</form>の値を動的に書き換える動作をします。 この"checked"の部分も、CGI引数を見て自動的に付加する部分ですが、 NMZ.headに "checked" を書き込んでしまうと、 CGI引数による書き換えが正しく行われません。
また、cat しただけでは <form method="get" action="{cgi}"> となりますから action="{cgi}"の 部分は action="/cgi-bin/namazu.cgi" などと、適宜書き換えてください。
Web サーバが Apache であり、設定ファイルに
SetServerEncoding UTF-8
と設定している場合、文字化けを起こします。
これは namazu.cgi が、UTF-8 の入力に対応していないためです。
SetServerEncoding EUC-JP
で運用してください。
他の Web サーバの場合は、同様の設定項目があれば、EUC-JP で 運用してください。
文書数、更新日時等のキーワード置換を利用したい場合は namazurc 側で template を指定せず、mknmzrc 側で指定する $TEMPLATEDIR を用いて template をカスタマイズしてください。
ただし、mknmzrc 側で指定して template をカスタマイズする場合は、 template を修正する度にインデックスを作り直す(アップデートでも可)必要が あります。
namazurc での template 指定は、インデックスのアップデートなしに行いたい 場合に都合が良いと思います。
namazurc 側で template を指定するケースは、既存のインデックスを使った カスタマイズが主です。 例えば、複数のインデックスを使っている場合などは、キーワード置換が 意味を持たない場合が多いため、namazu 側で template を指定することで 手軽にカスタマイズが可能となります。
『ウイルスチェッカが悪さをしている』 『レジストリのなかに "A:" を指すものがある』 とかいうのが良くある原因、と聞いたことがあります。
[namazu 508], Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> さんのメイルより引 用。
Windows 上でウィルスチェッカーを常駐させていると mknmz 実行 時に
Error! Runtime Exception
というメッセージが表示されることがあるそうです。その場合には ウィルスチェッカーを停めてから mknmz を再実行してください。
インデックスファイルの書き出しをする際のメッセージがWriting index files... と英語でメッセージが表示されている場合は環境変数LANGの設定を確認してください。 mknmzはLANGに `ja' から始まるlocale名が指定されていない時は日本語の処理を 行いません。 Namazu 2.0 tutorialの 日本語の文書を扱うにはを参照してください。
nkf Version 1.9 を使っていませんか? このバージョンのnkfには、全角空白を含む文が文字化けを起こすというバグがあります。 この場合、version 2.04以上にするか、version 1.7 にバージョンを下げましょう。
辞書のメンテナンスが容易なこと、動作が軽いことを考えると KAKASI の方が扱いやすいように思われます。 もちろん本格的な日本語の処理を行うには ChaSen の方が向いています。
KAKASI付属の kakasidict (テキストファイル) に単語を追加して KAKASI の make 時に一緒に作られた mkkanwa というプログラムを使って バイナリ形式の辞書に変換します。 出来上がった辞書は kanwadict という名前で /usr/local/lib/kakasi あたりにコピーすればよいでしょう。
フリーのかな漢字変換用辞書については馬場肇@京大さんによる Freely available dictionaries for kana-kanji conversion に情報がまとまっています。
MHonArc 2.4.5 以上を使ってください。resource file として次の 設定を用いるといいでしょう。
<MIMEARGS> text/plain:default=iso-2022-jp </MIMEARGS> <CHARSETCONVERTERS> plain; iso_2022_jp::str2html; iso2022jp.pl </CHARSETCONVERTERS>
MHonArc 2.6 以降デフォルト値が変更になりました。 Resource file として次の設定を用いるといいでしょう。 (Resource file に漢字を含める場合は JIS コードで記述します。 多少不具合が生じるかもしれませんが、概ね問題ありません。)
<DECODEHEADS> <DEFCHARSET> iso-2022-jp </DEFCHARSET> <CHARSETCONVERTERS> plain; iso_2022_jp::str2html; iso2022jp.pl iso-2022-jp; iso_2022_jp::str2html; iso2022jp.pl </CHARSETCONVERTERS> <!-- Allow MHonArc user to use ISO-2022-JP messages in resource file --> <VarRegex> \$([^\$\x1B]*)\$(?![^\x1B]*\x1B\([BJ]) </VarRegex>
MHonArc 2.6 以降の場合で、Perl 5.8 以上の場合は、 http://www.mhonarc.org/archive/html/mhonarc-dev/2003-06/msg00003.html にある eucjp.pl と Resource file を用いると、MHonARC の出力が EUC-JP になります。 また、Resource file は EUC-JP で記述できるので、JIS の'$'文字の問題 を気にする必要がありません。
nkf 2.04 以上を使ってみてください。nkfがUTF-8に対応していることから plaintext, html, mailnews, mhonarc, rfc, tex, hdml, hnf の形式での UTF-8文書を処理できる可能性があります。
そのファイルはパスワード付きのPDF ファイルでしょうか。 その PDF ファイルを acrobatreader でパスワード入力なしに開くことが できるか試してみてください。パスワード付きファイルは処理できません。
また、xpdf1.00以降にLanguage Support Packagesを導入していない 場合にはパスワードがついていなくても同じメッセージがでることがあります。 その場合は、Language Support Packages が必要です。 Xpdf から、xpdf-japanese.tar.gz を入手して付属文書に従って導入してください。
xlhtml/ppthtml のバグです。xlhtml 0.5.1 にバージョンアップして みてください。
wvWare でエラーが発生しています。wvWare が正しく動作するか 確認してください。 GNU libiconv をインストールして wvWare を再コンパイルしてみて ください。
groff が日本語対応でない場合は、ASCII 文字のみを処理します。
(日本語の man ファイルでも英語の文字列は検索できるものと思います。)
日本語の man ファイルを正しく処理するには、日本語対応の groff が必要です。日本語対応の groff をインストールして、 インデックスファイルを作り直してください。